package com.avic.system.dal.mapper;

import com.avic.system.dal.condition.PageQueryUserCondition;
import com.avic.system.dal.model.SystemUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 系统用户mapper
 *
 * @author: huangsheng
 * @date: 2017/10/19 下午5:29
 */
@Mapper
public interface SystemUserMapper {

    /**
     * 分页获取用户数据
     *
     * @author: huangsheng
     * @date: 2017/10/19 下午5:30
     */
    List<SystemUser> pageQueryUser(PageQueryUserCondition pageQueryUserCondition);

    /**
     * 获取数据总数
     *
     * @author: huangsheng
     * @date: 2017/10/19 下午5:59
     */
    int queryRecordsTotal(PageQueryUserCondition pageQueryUserCondition);

    /**
     * 通过登入名称查找用户
     *
     * @param userLoginName 登入名称
     *                      huangsheng
     */
    SystemUser queryUserByLoginName(@Param("userLoginName") String userLoginName);

    /**
     * 更新登入信息，IP，登入时间等
     *
     * @param currentLoginIp 当前登入IP
     * @param userId         会员id
     * @return 数据库成功执行更新的数据数量
     */
    int updateLoginInfo(@Param("currentLoginIp") String currentLoginIp, @Param("userId") String userId, @Param("loginLogId") int loginLogId);

    /**
     * 新增用户
     *
     * @author: huangsheng
     * @date: 2017/10/25 上午11:21
     */
    int insertUser(SystemUser systemUser);

    /**
     * 检验用户登入名的数量
     *
     * @author: huangsheng
     * @date: 2017/10/25 下午2:12
     */
    int checkUserLoginName(String userLoginName);

    /**
     * 通过用户ID获取会员信息
     *
     * @param userId 用户ID
     * @author: huangsheng
     * @date: 2017/10/25 下午3:44
     */
    SystemUser queryUserById(String userId);

    /**
     * 更新用户
     *
     * @author: huangsheng
     * @date: 2017/10/25 下午4:31
     */
    int updateSystemUser(SystemUser systemUser);

    /**
     * 修改用户状态，禁用or启用
     *
     * @param userState 用户状态 00启用， 01禁用
     * @param userId    用户id
     */
    int updateSystemUserState(@Param("userState") int userState, @Param("userId") String userId);

    SystemUser queryUserPassword(@Param("userId") String userId);

    int updateUserPassword(SystemUser systemUser);
}
